const _ = require('lodash')
const fs = require('fs')
const path = require('path')

/**
 * 映射 d 文件夹下的文件为模块
 */
const mapDir = d => {
	const tree = {}

	// 获得当前文件夹下的所有的文件夹和文件
	const [dirs, files] = _(fs.readdirSync(d)).partition(p => fs.statSync(path.join(d, p)).isDirectory())
	// 映射文件夹
	dirs.forEach(dir => {
		tree[dir] = mapDir(path.join(d, dir))
	})

	// 映射文件
	files.forEach(file => {
		if (path.extname(file) === '.js') {
			tree[path.basename(file, '.js')] = require(path.join(d, file))
		}
	})

	return tree
}





// 默认导出当前文件夹下的映射
module.exports = mapDir(path.join(__dirname))
